package com.xcms.util;

import java.lang.reflect.Field;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class DaoHelper {

	public static <T> T getModel(ResultSet rs, Class<? extends Object> classz) throws Exception {
		Field[] fields=classz.getDeclaredFields();
		//2、获取resultset所有列名放到一个集合里面
		ResultSetMetaData metadata=  rs.getMetaData();
		List<String> metadatalst=new ArrayList<String>();
		for(int i=1;i<=metadata.getColumnCount();i++)
		{
			metadatalst.add(metadata.getColumnName(i));
		}
		//拿结果集的列和javabean的属性进行匹配，匹配成功就赋值
		if(rs.next())
		{
			Object obj=classz.newInstance();
			for (Field field : fields) {
				String fieldname=field.getName();
				//遍历一下ResultSet的列，判断有没有和当前列名一样的列
				for (String rscolumn : metadatalst) {
					if(rscolumn.equals(fieldname))
					{
						field.setAccessible(true);
						field.set(obj, rs.getObject(fieldname));
					}
				}
			}
			return (T) obj;
		}
		return null;
	}
	public static <T> List<T> getList(ResultSet rs, Class<? extends Object> classz) throws Exception {
		Field[] fields=classz.getDeclaredFields();
		//2、获取resultset所有列名放到一个集合里面
		ResultSetMetaData metadata=  rs.getMetaData();
		List<String> metadatalst=new ArrayList<String>();
		for(int i=1;i<=metadata.getColumnCount();i++)
		{
			metadatalst.add(metadata.getColumnName(i));
		}
		//拿结果集的列和javabean的属性进行匹配，匹配成功就赋值
		List<Object> objs=new ArrayList<Object>();
		while(rs.next())
		{
			Object obj=classz.newInstance();
			for (Field field : fields) {
				String fieldname=field.getName();
				//遍历一下ResultSet的列，判断有没有和当前列名一样的列
				for (String rscolumn : metadatalst) {
					if(rscolumn.equals(fieldname))
					{
						field.setAccessible(true);
						field.set(obj, rs.getObject(fieldname));
					}
				}
			}
			objs.add(obj);
		}
		return (List<T>) objs;
	}
}
